export type Recordable<T = any> = Record<string, T>;

export interface ViteEnv {
    VITE_USER_NODE_ENV: "development" | "production" | "test";
    VITE_GLOB_APP_TITLE: string;
    VITE_GLOB_APP_SHORT_NAME: string;
    VITE_GLOB_APP_VERSION: string;
    VITE_GLOB_APP_LOGO: string;
    VITE_GLOB_APP_COPYRIGHT: string;
    VITE_GLOB_APP_KEYWORDS: string;
    VITE_GLOB_APP_DESC: string;
    VITE_PORT: number;
    VITE_REPORT: boolean;
    VITE_BUILD_COMPRESS: "gzip" | "brotli" | "gzip,brotli" | "none";
    VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean;
    VITE_DROP_CONSOLE: boolean;
    VITE_PWA: boolean;
    VITE_PUBLIC_PATH: string;
    VITE_API_URL: string;
    VITE_PROXY: [string, string][];
}

export interface WebSiteConfig {
    title: string;
    shortName: string;
    keywords: string;
    description: string;
    logo: string;
    icon: string;
    version: string;
    copyright: string;
    initialized: boolean;
}

export type ObjToKeyValArray<T> = {
    [K in keyof T]: [K, T[K]];
}[keyof T];
